﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace GaSaiGon.GUI
{
    public partial class frmThem_CapNhatTaiKhoan : Form
    {
        private string _status;

        public string Status
        {
            get { return _status; }
            set { _status = value; }
        }

        private int _maTaiKhoan;
        private TaiKhoanDTO _tK;

        public TaiKhoanDTO TK
        {
            get { return _tK; }
            set { _tK = value; }
        }

        public int MaTaiKhoan
        {
            get { return _maTaiKhoan; }
            set { _maTaiKhoan = value; }
        }

        public frmThem_CapNhatTaiKhoan()
        {
            InitializeComponent();
        }
        private void btnThem_CapNhat_Click(object sender, EventArgs e)
        {
            if (txtTenDangNhap.Text == "" || txtMatKhau.Text == "" || txtHoTen.Text == "" || txtCMND.Text == "")
            {
                MessageBox.Show("Bạn phải nhập đầy đủ thông tin!");
                return;
            }
            else if (IsUnicode(txtTenDangNhap.Text) == true)
            {
                MessageBox.Show("Tên đăng nhập không được sử dụng kí tự có dấu hoặc kí tự đặc biệt!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            else
            {
                TaiKhoanDTO TKDTO = new TaiKhoanDTO(txtTenDangNhap.Text, txtMatKhau.Text, txtHoTen.Text, txtCMND.Text, Convert.ToDateTime(dateTimePicker.Text), Convert.ToInt32(cbxGioiTinh.SelectedValue), txtDiaChi.Text, txtDienThoai.Text, Convert.ToInt32(cbxChucVu.SelectedValue));
                TaiKhoanBUS TKBUS = new TaiKhoanBUS();
                try
                {
                    if (Status == "Them")
                    {
                        if (TKBUS.LayThongTinTaiKhoan_TenDangNhap(TKDTO).Rows.Count >= 1)
                        {
                            MessageBox.Show("Tên tài khoản đã tồn tại!!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else
                        {
                            TKBUS.ThemTaiKhoan(TKDTO);
                            MessageBox.Show("Thêm thành công!!!", "", MessageBoxButtons.OK);
                            this.Close();
                        }
                        
                    }
                    else if (Status == "CapNhat")
                    {
                        TKDTO.MaTaiKhoan = TK.MaTaiKhoan;
                        TKBUS.CapNhatTaiKhoan(TKDTO);
                        MessageBox.Show("Cập nhật thành công!!!");
                        this.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmThem_CapNhatTaiKhoan_Load(object sender, EventArgs e)
        {
            TaiKhoanBUS TKBUS = new TaiKhoanBUS();
            if (Status == "Them")
            {
                lbMaTK.Visible = false;
                lbSoTK.Visible = false;
                btnThem_CapNhat.Text = "Thêm";
                cbxChucVu.DataSource = TKBUS.DanhSachChucVu();
                cbxChucVu.DisplayMember = "LoaiChucVu";
                cbxChucVu.ValueMember = "MaChucVu";
                //
                cbxGioiTinh.DataSource = TKBUS.DanhSachGioiTinh();
                cbxGioiTinh.DisplayMember = "LoaiGioiTinh";
                cbxGioiTinh.ValueMember = "MaGioiTinh";
            }
            if (Status == "CapNhat")
            {
                lbSoTK.Text = MaTaiKhoan.ToString();
                btnThem_CapNhat.Text = "Cập nhật";
                lbSoTK.Text = TK.MaTaiKhoan.ToString();
                txtTenDangNhap.Text = TK.TenDangNhap;
                txtMatKhau.Text = TK.MatKhau;
                txtHoTen.Text = TK.HoTen;
                txtCMND.Text = TK.Cmnd;
                dateTimePicker.Text = TK.NgaySinh.ToString();
               
                txtDiaChi.Text = TK.DiaChi;
                txtDienThoai.Text = TK.DienThoai;
                cbxChucVu.DataSource = TKBUS.DanhSachChucVu();
                cbxChucVu.DisplayMember = "LoaiChucVu";
                cbxChucVu.ValueMember = "MaChucVu";
                cbxGioiTinh.DataSource = TKBUS.DanhSachGioiTinh();
                cbxGioiTinh.DisplayMember = "LoaiGioiTinh";
                cbxGioiTinh.ValueMember = "MaGioiTinh";
                cbxGioiTinh.SelectedValue = TK.GioiTinh;
                cbxChucVu.SelectedValue = TK.ChucVu;
            }
           
        }

        private void txtCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtTenDangNhap_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((47 < e.KeyChar && e.KeyChar < 58) || (64 < e.KeyChar && e.KeyChar < 91) || (96 < e.KeyChar && e.KeyChar < 123) || char.IsControl(e.KeyChar) == true)
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
                MessageBox.Show("Không được nhập kí tự có dấu hoặc kí tự đặc biệt", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private bool IsUnicode(string s)
        {
            for (int i = 0; i < s.Length; i++)
                if (!((47 < s[i] && s[i] < 58) || (64 < s[i] && s[i] < 91) || (96 < s[i] && s[i] < 123)))
                    return true;
            return false;
        }

    }
}
